/**
给你两棵二叉树的根节点 p 和 q ，编写一个函数来检验这两棵树是否相同。
如果两个树在结构上相同，并且节点具有相同的值，则认为它们是相同的。
示例 1：


输入：p = [1,2,3], q = [1,2,3]
输出：true
*/

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public boolean isSameTree(TreeNode p, TreeNode q) {
        if(p==null&& q==null){
            return true;
        }
        if(p==null ||q==null){
            return false;
        }
       return  bfs(p,q);
    }
    public boolean bfs(TreeNode p,TreeNode q){
           boolean temp=true;;
        if(p.val!=q.val){
            temp=false;
        }
        if(p.left!=null&&q.left==null || p.left==null&&q.left!=null ||
        p.right!=null && q.right==null || p.right==null && q.right!=null){
            return false;
        }
        
        temp=temp && isSameTree(p.left,q.left);
        temp=temp && isSameTree(p.right,q.right);
        return temp;
    }
}